﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ASBCC.Workflow.Client.Controllers
{
    public class IQArgument
    {
        #region fields
        private bool _TQAssembly;
        private bool _ISBSS;
        private int[] _ApproveBStatusApprover;
        private int[] _IQReviewApprover;
        private int[] _IQCompReceivingApprover;
        private int[] _IQPrepareApprover;
        private int[] _IQCompRecReportApprover;
        private int[] _IQCompRecRptReviewApprover;
        private int[] _IQManufacturePlanApprover;
        private int[] _IQAssemblyReportApprover;

        private int[] _IQAssemblyRptReivewApprover;
        private int[] _IQTestingReportApprover;
        private int[] _IQTestingRptReviewApprover;
        private int[] _IQReportApprover;
        private int[] _IQReportReviewApprover;

        #endregion

        #region Property
        public bool TQAssembly
        {
            get
            {
                return _TQAssembly;
            }
            set
            {
                _TQAssembly = value;
            }
        }
        public bool ISBSS
        {
            get
            {
                return _ISBSS;
            }
            set
            {
                _ISBSS = value;
            }
        }

        public int[] ApproveBStatusApprover
        {
            get
            {
                return _ApproveBStatusApprover;
            }
            set
            {
                _ApproveBStatusApprover = value;
            }
        }
        public int[] IQReviewApprover
        {
            get
            {
                return _IQReviewApprover;
            }
            set
            {
                _IQReviewApprover = value;
            }
        }
        public int[] IQCompReceivingApprover
        {
            get
            {
                return _IQCompReceivingApprover;
            }
            set
            {
                _IQCompReceivingApprover = value;
            }
        }
        public int[] IQPrepareApprover
        {
            get
            {
                return _IQPrepareApprover;
            }
            set
            {
                _IQPrepareApprover = value;
            }
        }
        public int[] IQCompRecReportApprover
        {
            get
            {
                return _IQCompRecReportApprover;
            }
            set
            {
                _IQCompRecReportApprover = value;
            }
        }

        public int[] IQCompRecRptReviewApprover
        {
            get
            {
                return _IQCompRecRptReviewApprover;
            }
            set
            {
                _IQCompRecRptReviewApprover = value;
            }
        }
        public int[] IQManufacturePlanApprover
        {
            get
            {
                return _IQManufacturePlanApprover;
            }
            set
            {
                _IQManufacturePlanApprover = value;
            }
        }
        public int[] IQAssemblyReportApprover
        {
            get
            {
                return _IQAssemblyReportApprover;
            }
            set
            {
                _IQAssemblyReportApprover = value;
            }
        }
        public int[] IQAssemblyRptReivewApprover
        {
            get
            {
                return _IQAssemblyRptReivewApprover;
            }
            set
            {
                _IQAssemblyRptReivewApprover = value;
            }
        }

        public int[] IQTestingReportApprover
        {
            get
            {
                return _IQTestingReportApprover;
            }
            set
            {
                _IQTestingReportApprover = value;
            }
        }
        public int[] IQTestingRptReviewApprover
        {
            get
            {
                return _IQTestingRptReviewApprover;
            }
            set
            {
                _IQTestingRptReviewApprover = value;
            }
        }
        public int[] IQReportApprover
        {
            get
            {
                return _IQReportApprover;
            }
            set
            {
                _IQReportApprover = value;
            }
        }
        public int[] IQReportReviewApprover
        {
            get
            {
                return _IQReportReviewApprover;
            }
            set
            {
                _IQReportReviewApprover = value;
            }
        }
        #endregion

        public Dictionary<string, object> Arguments
        {
            get
            {
                return CreateArguments();
            }
        }

        private Dictionary<string, object> CreateArguments()
        {
            Dictionary<string, object> arguments = new Dictionary<string, object>();

            arguments[IQActivityNameConsts.ApproveBStatus] = this.ApproveBStatusApprover;
            arguments[IQActivityNameConsts.IQAssemblyReport] = this.IQAssemblyReportApprover;
            arguments[IQActivityNameConsts.IQAssemblyRptReivew] = this.IQAssemblyRptReivewApprover;
            arguments[IQActivityNameConsts.IQCompReceiving] = this.IQCompReceivingApprover;
            arguments[IQActivityNameConsts.IQCompRecReport] = this.IQCompRecReportApprover;
            arguments[IQActivityNameConsts.IQCompRecRptReview] = this.IQCompRecRptReviewApprover;
            arguments[IQActivityNameConsts.IQManufacturePlan] = this.IQManufacturePlanApprover;
            arguments[IQActivityNameConsts.IQPrepare] = this.IQPrepareApprover;
            arguments[IQActivityNameConsts.IQReport] = this.IQReportApprover;
            arguments[IQActivityNameConsts.IQReportReview] = this.IQReportReviewApprover;
            arguments[IQActivityNameConsts.IQReview] = this.IQReviewApprover;
            arguments[IQActivityNameConsts.IQTestingReport] = this.IQTestingReportApprover;
            arguments[IQActivityNameConsts.IQTestingRptReview] = this.IQTestingRptReviewApprover;



            arguments[IQWorkflowKeyConsts.ISBSS] = this.ISBSS;
            arguments[IQWorkflowKeyConsts.TQAssembly] = this.TQAssembly;

            return arguments;
        }
    }
}
